package main

import (
	"fmt"
)

type Err struct {
}

func (e *Err) Error() string {
	return ""
}

func createErr() error {
	return &Err{}
}

func testType() {

	//定义的时候指定是error接口类型接收
	var err1 error = &MyErr{}
	_, err1Ok := err1.(*MyErr)
	fmt.Println(err1Ok)

	//createErr返回的是error接口类型
	err2 := createErr()
	_, err2Ok := err2.(*MyErr)
	fmt.Println(err2Ok)

	//定义为空接口类型,空的接口可以接收任何的类型的数据
	var err3 interface{} = &Err{}
	i, err3Ok := err3.(*MyErr)

	if !err3Ok {
		fmt.Println(err3Ok)
		return
	}

	i.Print()

}

func main() {
	testType()
}
